python - 在 Python 3.4 中将 datetime.time 转换为 datetime.timedelta
全部标签 我有一个数组,我想做一个散列,这样我就可以快速询问“数组中有X吗?”。在perl中,有一种简单(快速)的方法可以做到这一点:my@array=qw(123);my%hash;@hash{@array}=undef;这会生成一个哈希值,如下所示:{1=>undef,2=>undef,3=>undef,}我在Ruby中想到的最好的是:array=[1,2,3]hash=Hash[array.map{|x|[x,nil]}]给出:{1=>nil,2=>nil,3=>nil}是否有更好的Ruby方法?编辑1不,Array.include?这不是一个好主意。它慢。它在O(n)而不是O(1)中执行
我有一个从表单中填充的RubyDateTime。此外,我还有n小时的表格。我想从之前的DateTime中减去这n小时。(获取时间范围)。DateTime有两个方法“-”和“API)。有什么建议吗? 最佳答案 你可以这样做。adjusted_datetime=(datetime_from_form.to_time-n.hours).to_datetime 关于ruby-从Ruby中的DateTime中减去n小时,我们在StackOverflow上找到一个类似的问题:
如何在ruby中将散列转换为结构?鉴于此:h={:a=>1,:b=>2}我想要一个这样的结构:s.a==1s.b==2 最佳答案 如果您已经定义了一个结构,并且您想要使用散列实例化一个实例:Person=Struct.new(:first_name,:last_name,:age)person_hash={first_name:"Foo",last_name:"Bar",age:29}person=Person.new(*person_hash.values_at(*Person.members))=>#
在C#中,DateTime类中有一个方法AddDays([numberofdays])。ruby中有这样的方法吗? 最佳答案 Date类提供了一个+运算符来执行此操作。>>d=Date.today=>#>>d.to_s=>"2009-08-31">>(d+3).to_s=>"2009-09-03">> 关于ruby-rubydatetime中有add_days吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflo
这是我的哈希:tempData={"a"=>100,"here"=>200,"c"=>"hello"}我需要像下面这样的方法来访问散列键:tempData.a#100tempData.here#200 最佳答案 你可以把你的散列包在OpenStruct中:require'ostruct'tempData={"a"=>100,"here"=>200,"c"=>"hello"}os=OpenStruct.newtempDataos.a#=>100os.here#=>200如果你真的真的想要,你也可以猴子修补Hash类,但我建议不要这样做
对于网络编程,数字以字符串形式出现。但是to_i会将"5abc"转换为5并将"abc"转换为0,都是错误的答案。为了捕获这些,我写道:defnumber_or_nil(s)number=s.to_inumber=nilif(number.to_s!=s)returnnumberend是否有一种更简洁、更符合Ruby标准的方法来完成此转换并检测该字符串不是数字? 最佳答案 使用整数(字符串)如果字符串无法转换为整数,它将引发ArgumentError错误。Integer('5abc')#=>ArgumentError:invalidv
有没有办法将散列扁平化为字符串,并在键和值之间以及键/值对之间使用可选的分隔符?例如,print{:a=>:b,:c=>:d}.flatten('=','&')应该打印a=b&c=d我写了一些代码来做到这一点,但我想知道是否有更简洁的方法:classHashdefflatten(keyvaldelimiter,entrydelimiter)string=""self.eachdo|key,value|key="#{entrydelimiter}#{key}"ifstring!=""#nastyhackstring+="#{key}#{keyvaldelimiter}#{value}"e
我正在尝试将Ruby中的全大写字符串转换为小写字符串,但每个单词的第一个字符都是大写。示例:将“我的字符串在这里”转换为“我的字符串在这里”。我知道我可以使用.downcase方法,但这会使所有内容都变成小写(“我的字符串在这里”)。我正在扫描文件中的所有行并进行此更改,那么是否有可以通过ruby使用的正则表达式来实现此目的?谢谢! 最佳答案 如果您正在使用Rails(您真正需要的只是ActiveSupport,它是Rails的一部分),您可以使用titleize:"MYSTRINGHERE".titleize#=>"MyStr
我正在编写一个使用Hpricot的爬虫。它从某个网页下载字符串列表,然后我尝试将其写入文件。编码有问题:"\xC3"fromASCII-8BITtoUTF-8我有在网页上呈现并以这种方式打印的项目:Développementstr.encoding返回UTF-8,因此force_encoding('UTF-8')没有帮助。我如何将其转换为可读的UTF-8? 最佳答案 您的字符串似乎被错误地编码了:"Développement".encode("iso-8859-1").force_encoding("utf-8")#=>"Dév
为什么使用IRB会自动加载Date&Time类,但DateTime类不会?我必须require'date',这对我来说没有意义,因为我认为Date和DateTime都在使用标准库'date'?ruby-1.9.2-p290:001>Date=>Dateruby-1.9.2-p290:002>Time=>Timeruby-1.9.2-p290:003>DateTimeNameError:uninitializedconstantObject::DateTimefrom(irb):3from/Users/kamilski81/.rvm/rubies/ruby-1.9.2-p290/bin/